home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / misc / math / MathFX_src.lha / fxsvpa.c < prev    next >
C/C++ Source or Header  |  1995-12-20  |  1KB  |  42 lines

  1. /* Sets the edges of the viewport to the specified absolute          */
  2. /* coordinates (mm), measured with respect to the current subpage    */
  3. /* boundaries                                                        */
  4.  
  5. #include "mathfx.h"
  6.  
  7. void fxsvpa(xmin,xmax,ymin,ymax)
  8. float xmin, xmax, ymin, ymax;
  9. {
  10.  
  11.     int nx, ny, cs;
  12.     float sxmin, symin;
  13.     float spdxmi, spdxma, spdymi, spdyma;
  14.     float vpdxmi, vpdxma, vpdymi, vpdyma;
  15.  
  16.     int level;
  17.  
  18.     glev(&level);
  19.     if (level<1) fatal("Please call FXSTAR before calling FXSVPA.");
  20.     if((xmin>=xmax)||(ymin>=ymax)||(xmin<0.)||(ymin<0.))
  21.         fatal("Invalid limits in PLSVPA.");
  22.  
  23.     gsub(&nx,&ny,&cs);
  24.     if ((cs<=0) || (cs>(nx*ny)))
  25.         fatal("Please call FXADV or FXENV to go to a subpage.");
  26.  
  27.     gspd(&spdxmi,&spdxma,&spdymi,&spdyma);
  28.     sxmin = dcmmx(spdxmi);
  29.     symin = dcmmy(spdymi);
  30.  
  31.     vpdxmi = mmdcx(sxmin+xmin);
  32.     vpdxma = mmdcx(sxmin+xmax);
  33.     vpdymi = mmdcy(symin+ymin);
  34.     vpdyma = mmdcy(symin+ymax);
  35.     
  36.     svpd(vpdxmi,vpdxma,vpdymi,vpdyma);
  37.     svpp(dcpcx(vpdxmi),dcpcx(vpdxma),dcpcy(vpdymi),dcpcy(vpdyma));
  38.     sclp(dcpcx(vpdxmi),dcpcx(vpdxma),dcpcy(vpdymi),dcpcy(vpdyma));
  39.     slev(2);
  40. }
  41.  
  42.